﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using GrupyzServices.Logging;
using System.Net;
using System.Configuration;
using System.Net.Configuration;
using System.Web.Configuration;
using System.Web;
using GrupyzServices.BdAccess;


namespace GrupyzServices.MailTools
{
    public class Mail
    {
        static ILogger log = new NLogLogger();
        static Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
        static MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
        static string Host = settings.Smtp.Network.Host;
        static int Port = settings.Smtp.Network.Port;
        static string UserName = settings.Smtp.Network.UserName;
        static string Password = settings.Smtp.Network.Password;
        

        private static void Envia(MailMessage mail)
        {
            SmtpClient cliente = new SmtpClient(Host, Port);
            cliente.Credentials = new NetworkCredential(UserName, Password);
            cliente.SendAsync(mail, null);
        }

        public static void SendMailCompra(string email,FinalOrderViewModel fo)
        {
            try
            {
                VoucherRepository vr = new VoucherRepository();
                string filename = vr.CreateVoucherByOrder(fo.OrderId);

                if (filename == null) return;

                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<compras@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - A sua compra foi efectuada";
                mail.Body = "Já foi debitado o valor do negócio";
                mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);

            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void SendMailCompraPendente(string email, FinalOrderViewModel fo)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<compras@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - A sua compra foi efectuada";
                mail.Body = "Neste momento ainda não foi retirado o valor do negócio.";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void Registo(string email)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<info@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - Registo efectuado";
                mail.Body = "Bem vindo ao descontoemgrupo.com.<br/>Ficamos muito felizes por nos ter escolhido.<br/> Boas compras!";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);

            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void SendSubscreveNewsletter(string email)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<info@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - Subscreveu Newsletter";
                mail.Body = "Obrigado por subscrever a nossa newsletter";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void EsqueceuPassword(string email, string password)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<info@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - Alteração de password";
                mail.Body = "</br>A sua password foi alterarada para: " + password + " </br><p><b>Não se esqueça de alterar a password no seu próximo login.</b></p>";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);

            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void AlertarCompraReferencia(string email, string nome, int totalReferencias)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<info@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - Compra de uma referência";
                mail.Body = "</br>o seu amigo: " + nome + ", fez uma compra</br><p><b>Até este momento " + totalReferencias + " referencias suas compraram.</b></p>";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);

            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }

        public static void AlertarCompraReferenciaPendente(string email, string nome, int totalReferencias)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(email);
                mail.From = new MailAddress("Descontoemgrupo<info@descontoemgrupo.com>");
                mail.Subject = "Desconto em Grupo - Compra de uma referência";
                mail.Body = "</br>o seu amigo: " + nome + ", fez uma compra. Este negócio ainda não terminou, assim que terminar os pontos ficarão disponiveis. Para terminar mais rápido convida mais amigos!</br><p><b>Até este momento " + totalReferencias + " referencias suas compraram.</b></p>";
                //mail.Attachments.Add(new Attachment(filename));
                mail.IsBodyHtml = true;
                Envia(mail);

            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
        }
    }
}
